rust bevy を使ってみたメモ 2Dオブジェクトの生成
bevyの公式ドキュメント(英語)を見つけたため、少しずつ使い方がわかってきた気がします。
てか、他の方々も公式ドキュメントみながらコードを書いているんだろうなぁ
bevyのバージョン:0.12.1
参考:List of all items in this crate (docs.rs)
use bevy::prelude::*;
fn main() {
App::new()
.add_plugins(DefaultPlugins.set(WindowPlugin {
primary_window: Some(Window {
title: "Test".into(),
resolution: (600.0, 600.0).into(),
resizable: false,
..default()
}),
..default()
}))
//コマンドをタプルで実行(Startupは最初に一回だけ実行されるらしい)
.add_systems(Startup, (create_camera, create_object))
.run()
}
//カメラの読み込み
fn create_camera (mut commands: Commands) {
//これを生成しないとオブジェクトを観測できない
commands.spawn(Camera2dBundle::default());
}
//オブジェクトの生成
fn create_object (mut commands: Commands) {
//スプライトバンドルを生成
commands.spawn(SpriteBundle {
sprite: Sprite {
//rgbaを0-255の範囲で指定(他にもあったけどこれが一番わかりやすそう)
color: Color::rgba_u8(255, 255, 255, 255),
//オブジェクトのサイズを設定(Someとinto()で無理やり)
custom_size: Some((100.0, 100.0).into()),
//ほかにも設定があったけどよくわからなかった
..default()
},
//親オブジェクトに対しての相対位置を設定できるっぽい(2Dだと中心が原点、x軸が横、y軸が縦)
transform: Transform::from_xyz(240.0, 240.0, 0.0),
//グローバル位置(絶対位置)もあるっぽいけどとりあえず相対位置で設定した
//他の設定はとりあえずデフォルトで
..default()
});
}
実行結果は下の通り
ウィンドウの大きさは600×600でオブジェクトの大きさが100×100、位置が(240, 240)に設定したらこんな感じになる。
なるほどなぁ
なんとなーく、公式ドキュメントの読み方がわかってきたようなきがする。
次は生成したオブジェクトを動かしてみるか…
(追記:2024/02/19)
transformでも大きさを設定できるっぽいです
どっちがいいかはわかりませんが…
//親オブジェクトに対しての相対位置を設定できるっぽい(2Dだと中心が原点、x軸が横、y軸が縦)
transform: Transform {
translation: (240.0, 240.0, 0.0).into(),
scale: (100.0, 100.0, 0.0).into(),
..default()
},